Microprocessor based systems or embedded microcontroller systems, as for example passive or active entry systems, RFID systems, smart and security cards require safe and reliable program execution. Harsh or extreme operating conditions as well as malicious fault attacks can cause malfunctioning and unsafe operation, which is to be avoided under all circumstances.
In order to detect errors and deviations from normal program execution, it is known in the art to insert some checkpoints into the program code. At these checkpoints a value in a memory location is compared with an expected value. If the values match, normal program execution is continued. If the value in the memory is not equal to the expected value, program execution is aborted.
However, this conventional solution has several drawbacks. The granularity of the checkpoints along the program code depends on the number of checkpoints and must be kept low in order to minimize execution time. This means that program execution is not verified in between the checkpoints and throughout a considerable part of the program. Furthermore, the general reliability and verifiability is limited as the known methods are based on self-verification of the program.